/**
 * File: ProcessableCollection.java
 * Created by: mhaimel
 * Created on: Mar 30, 2010
 * CVS:  $Id: ProcessableCollection.java 1.0 Mar 30, 2010 2:10:15 PM mhaimel Exp $
 */
package uk.ac.ebi.curtain.model.graph;

import java.util.Collection;

import uk.ac.ebi.curtain.model.graph.GraphAccess.ProcessEach;
import uk.ac.ebi.curtain.model.graph.GraphAccess.TouchEach;

/**
 * @author mhaimel
 *
 */
public interface ProcessableCollection<E> extends Collection<E> {
	
	/**
	 * @param filter
	 * @return Sublist of the current collection using the filter provided
	 */
	ProcessableCollection<E> processQueue(ProcessEach<E> filter);	
	ProcessableCollection<E> processQueue(TouchEach<E> touch);		
	<T extends ProcessEach<E>> T process(T filter);		
	<T extends TouchEach<E>> T process(T touch);	

}
